﻿using System.Runtime;

namespace System
{
    [NonScript]
    public struct Guid : IFormattable, IComparable, IComparable<Guid>, IEquatable<Guid>
    {
        public Guid(byte[] b)
        {
        }

        public Guid(uint a, ushort b, ushort c, byte d, byte e, byte f, byte g, byte h, byte i, byte j, byte k)
        {
        }

        public Guid(int a, short b, short c, byte[] d)
        {
        }

        public Guid(int a, short b, short c, byte d, byte e, byte f, byte g, byte h, byte i, byte j, byte k)
        {
        }

        public Guid(string g)
        {
        }

        public static Guid Parse(string input)
        {
            return new Guid();
        }

        public static bool TryParse(string input, out Guid result)
        {
            result = new Guid();
            return false;
        }

        public static Guid ParseExact(string input, string format)
        {
            return new Guid();
        }

        public static bool TryParseExact(string input, string format, out Guid result)
        {
            result = new Guid();
            return false;
        }

        public byte[] ToByteArray()
        {
            return new byte[0];
        }

        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        public override string ToString()
        {
            return this.ToString("D", null);
        }

        public override int GetHashCode()
        {
            return 0;
        }

        public override bool Equals(object o)
        {
            return false;
        }

        public bool Equals(Guid g)
        {
            return false;
        }

        public int CompareTo(object value)
        {
            return 0;
        }

        public int CompareTo(Guid value)
        {
            return 0;
        }

        public static bool operator ==(Guid a, Guid b)
        {
            return false;
        }

        public static bool operator !=(Guid a, Guid b)
        {
            return !(a == b);
        }
        
        public static Guid NewGuid()
        {
            Guid result = new Guid();
            return result;
        }

        [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        public string ToString(string format)
        {
            return this.ToString(format, null);
        }

        public string ToString(string format, IFormatProvider provider)
        {
            return null;
        }
    }
}
